package view;

import java.awt.Rectangle;
import java.util.Iterator;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import controller.ConsultationMembreExecutifListener;
import controller.LocationInitListener;
import model.courtier.DAOFilm;
import model.donnee.Film;
import model.donnee.Genre;
import model.donnee.MembreFilm;
import model.donnee.Pays;
import model.donnee.Scenariste;

public class FicheFilm extends JFrame {

	//Labels
	
	private JLabel lblTitre = new JLabel("Titre: ");
	private JLabel lblAnneeSortie = new JLabel("Annee de sortie: ");
	private JLabel lblLangue = new JLabel("Langue: ");
	private JLabel lblDuree = new JLabel("Duree: ");
	private JLabel lblActeur = new JLabel("Acteur(s):");
	private JLabel lblPays = new JLabel("Pay(s): ");
	private JLabel lblGenre = new JLabel("Genre(s): ");
	private JLabel lblScenariste = new JLabel("Scenariste(s): ");
	private JLabel lblRealisateur = new JLabel("Realisateur: ");
	private JLabel lblResume = new JLabel("Resume: ");
	
	//Jlists
	
	private JList<String> lstScenaristes = new JList<String>();
	private JList<String> lstPays = new JList<String>();
	private JList<String> lstGenre = new JList<String>();
	private JList<String> lstActeurs = new JList<String>();
	private JList<String> lstRealisateurs = new JList<String>();
	private JTextArea txtResume = new JTextArea();
	
	private JButton btnLouer = new JButton("Louer ce film");
	
	private DefaultListModel<String> modelActeurs = new DefaultListModel<String>();
	private DefaultListModel<String> modelScenaristes = new DefaultListModel<String>();
	private DefaultListModel<String> modelGenre = new DefaultListModel<String>();
	private DefaultListModel<String> modelPays = new DefaultListModel<String>();
	private DefaultListModel<String> modelRealisateurs = new DefaultListModel<String>();
	
	private JScrollPane scrollActeurs = new JScrollPane();
	private JScrollPane scrollScenaristes = new JScrollPane();
	private JScrollPane scrollGenre = new JScrollPane();
	private JScrollPane scrollPays = new JScrollPane();
	private JScrollPane scrollRealisateurs = new JScrollPane();
	private JScrollPane scrollResume = new JScrollPane();
	
	public FicheFilm(){
		this.setTitle("");
		this.setBounds(new Rectangle(500,500));
		this.lblTitre.setBounds(new Rectangle(3,10,350,20));
		this.lblAnneeSortie.setBounds(new Rectangle(3,30,350,20));
		this.lblLangue.setBounds(new Rectangle(3,50,350,20));
		this.lblDuree.setBounds(new Rectangle(3,70,350,20));
		this.lblRealisateur.setBounds(new Rectangle(3,90,350,20));
		
		this.add(this.lblTitre);
		this.add(this.lblAnneeSortie);
		this.add(this.lblLangue);
		this.add(this.lblDuree);
		this.add(this.lblRealisateur);
		this.add(new JLabel());
		this.setVisible(true);
	}
	
	public FicheFilm(String idFilmSelectionner){
		modelActeurs.removeAllElements();
		modelScenaristes.removeAllElements();
		modelGenre.removeAllElements();
		modelPays.removeAllElements();
		modelRealisateurs.removeAllElements();
		
		int idFilm = Integer.parseInt(idFilmSelectionner.substring(0, idFilmSelectionner.indexOf(' ')));
		
		Film infoFilm = DAOFilm.getFilm(idFilm);
		
		this.setTitle(infoFilm.getTitre());
		this.setBounds(new Rectangle(500,700));
		
		Iterator it = infoFilm.getMembreFilm().iterator();
		while(it.hasNext()){
			MembreFilm temp =  (MembreFilm) it.next();
			if (temp.getRole().equals("Réalisateur")) {
				modelRealisateurs.addElement(temp.getIdMembreExecutif().getPersonne().getNom() 
						+", "+temp.getIdMembreExecutif().getPersonne().getPrenom());
			}
			else{
				modelActeurs.addElement(temp.getIdMembreExecutif().getPersonne().getNom() 
						+", "+temp.getIdMembreExecutif().getPersonne().getPrenom());
			}
		}
		
		Iterator it2 = infoFilm.getScenaristes().iterator();
		while(it2.hasNext()){
			Scenariste temp = (Scenariste) it2.next();
			modelScenaristes.addElement(temp.getNomcomplet());
		}
		
		Iterator it3 = infoFilm.getGenres().iterator();
		while(it3.hasNext()){
			Genre temp = (Genre) it3.next();
			modelGenre.addElement(temp.getNom());
		}
		
		Iterator it4 = infoFilm.getPays().iterator();
		while(it4.hasNext()){
			Pays temp = (Pays) it4.next();
			modelPays.addElement(temp.getNompays());
		}		
		
		this.scrollRealisateurs.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		this.scrollResume.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		this.scrollResume.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		
		this.lblTitre.setBounds(new Rectangle(3,10,350,20));
		this.lblAnneeSortie.setBounds(new Rectangle(3,30,350,20));
		this.lblLangue.setBounds(new Rectangle(3,50,350,20));
		this.lblDuree.setBounds(new Rectangle(3,70,350,20));
		this.btnLouer.setBounds(new Rectangle(200, 550, 150, 30));
		
		this.lblRealisateur.setBounds(new Rectangle(3,90,350,20));
		this.scrollRealisateurs.setBounds(new Rectangle(104,90,350,20));
		
		this.lblActeur.setBounds(new Rectangle(3, 110, 100, 20));
		this.scrollActeurs.setBounds(new Rectangle(104,110,350,60));
		
		this.lblGenre.setBounds(new Rectangle(3,170,100,20));
		this.scrollGenre.setBounds(new Rectangle(104, 170, 350, 60));
		
		this.lblPays.setBounds(new Rectangle(3,230,100,20));
		this.scrollPays.setBounds(new Rectangle(104,230,350,60));
		
		this.lblScenariste.setBounds(new Rectangle(3, 290, 100, 20));
		this.scrollScenaristes.setBounds(new Rectangle(104, 290, 350, 60));
		
		this.lblResume.setBounds(new Rectangle(3, 350, 100, 20));
		this.scrollResume.setBounds(new Rectangle(104, 350, 350, 200));
		
		this.txtResume.setLineWrap(true);
		this.txtResume.setEditable(false);
		scrollResume.setViewportView(txtResume);
		//set les labels
		
		this.lblTitre.setText(infoFilm.getTitre());
		this.lblAnneeSortie.setText("" + infoFilm.getAnnee());
		this.lblLangue.setText(infoFilm.getLangue());
		this.lblDuree.setText(""+ infoFilm.getDuree());
		this.txtResume.setText(infoFilm.getResume());
		
		this.lstActeurs.setModel(modelActeurs);
		this.lstGenre.setModel(modelGenre);
		this.lstScenaristes.setModel(modelScenaristes);
		this.lstPays.setModel(modelPays);
		this.lstRealisateurs.setModel(modelRealisateurs);
		
		this.scrollActeurs.setViewportView(lstActeurs);
		this.scrollGenre.setViewportView(lstGenre);
		this.scrollScenaristes.setViewportView(lstScenaristes);
		this.scrollPays.setViewportView(lstPays);
		this.scrollRealisateurs.setViewportView(lstRealisateurs);
		
		this.btnLouer.addActionListener(new LocationInitListener(infoFilm));
		
		this.lstRealisateurs.addMouseListener(new ConsultationMembreExecutifListener(infoFilm.getMembreFilm(), lstRealisateurs));
		this.lstActeurs.addMouseListener(new ConsultationMembreExecutifListener(infoFilm.getMembreFilm(), lstActeurs));
		
		this.add(this.btnLouer);
		this.add(this.lblTitre);
		this.add(this.lblAnneeSortie);
		this.add(this.lblLangue);
		this.add(this.lblDuree);
		this.add(this.lblRealisateur);
		this.add(this.lblActeur);
		this.add(this.lblGenre);
		this.add(this.lblPays);
		this.add(this.lblScenariste);
		this.add(this.lblResume);
		this.add(this.scrollActeurs);
		this.add(this.scrollGenre);
		this.add(this.scrollPays);
		this.add(this.scrollScenaristes);
		this.add(this.scrollRealisateurs);
		this.add(this.scrollResume);
		
		this.add(new JLabel());
		
		this.setVisible(true);
	}
	
}
